/**
 * Project: Utilities <br>
 * Package: org.leumasjaffe.collections.map
 */
package org.leumasjaffe.collections.map;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;

/**
 * Class org.leumasjaffe.collections.map..MultiMap in file MultiMap.java <br>
 * 
 * @author leumasjaffe
 * @version Feb 1, 2014
 * Created on: Feb 1, 2014
 * 
 */
@NonNullByDefault
public interface MultiMap<K, V> extends Map<K, V> {
	
	void putAll(@Nullable K key, @Nullable Collection<? extends V> col);
	
	<C extends K> void putAll(@Nullable MultiMap<C, ? extends V> m);
	
	void remove(@Nullable K key, int count);
	
	int removeAll(@Nullable K key);
	
	int count(@Nullable K key);
	
	Iterator<V> equalRange(@Nullable K key);
	
	Collection<V> getAll(@Nullable K key);
		
}
